package com.dreamchaser.familydevice.config;

/***
 *
 *
 * @Author: SJie
 * Date: 2020/2/18 下午3:02
 * Description:
 *
 */

import com.dreamchaser.familydevice.shiro.filter.ShiroFilterChainManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;

import java.util.List;

/**
 * Spring Boot扩展了Spring的ApplicationContextEvent，提供了四种事件：
 * ApplicationStartedEvent ：spring boot启动开始时执行的事件
 * ApplicationEnvironmentPreparedEvent：spring boot 对应Enviroment已经准备完毕，但此时上下文context还没有创建。
 * ApplicationPreparedEvent：spring boot上下文context创建完成，但此时spring中的bean是没有完全加载完成的。
 * ApplicationFailedEvent：spring boot启动异常时执行事件
 * @ClassName: CustomApplicationListenerStarted
 * @author OnlyMate
 * @Date 2018年9月14日 下午4:22:43
 *
 */
@Slf4j
public class CustomApplicationListenerStarted implements ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        ShiroFilterChainManager ss=SpringContextHolder.getBean(ShiroFilterChainManager.class);
        List<String> urls = SpringContextHolder.getBean("ignoreUrls");
        ss.reloadFilterChain(urls);
        log.info("CustomApplicationListenerStarted ==> onApplicationEvent method");
    }

}
